﻿Imports System.Data.SqlClient
Imports Logistica.Entities

Public NotInheritable Class TipoMovimientoDO
    Inherits DataObjectBase

    Function Listar() As List(Of TipoMovimientoBE)
        Dim resultado As New List(Of TipoMovimientoBE)

        Dim procedimiento As String = "ListarTiposMovimiento"

        Using conexion As New SqlConnection(Me.ConnectionString)
            Dim comando As New SqlCommand(procedimiento, conexion)
            comando.CommandType = CommandType.StoredProcedure

            Try
                conexion.Open()
                Dim reader As IDataReader = comando.ExecuteReader()

                While reader.Read
                    Dim info As New TipoMovimientoBE
                    info.Id = reader.GetInt32(reader.GetOrdinal("IdTipoMovimiento"))
                    info.Nombre = reader.GetString(reader.GetOrdinal("Nombre"))
                    info.Descripcion = reader.GetString(reader.GetOrdinal("Descripcion"))

                    resultado.Add(info)
                End While


            Catch ex As Exception
                Throw ex

            Finally
                If conexion.State <> ConnectionState.Closed Then
                    conexion.Close()
                End If
            End Try


        End Using



        Return resultado

    End Function

    Function Insertar(infoTipoMovimiento As Entities.TipoMovimientoBE) As Integer
        Dim codigoRegistro As Integer = 0
        Dim procedimiento As String = "InsertarTipoMovimiento"

        Using conexion As New SqlConnection(Me.ConnectionString)
            Dim comando As New SqlCommand(procedimiento, conexion)
            comando.CommandType = CommandType.StoredProcedure
            comando.Parameters.Add(New SqlParameter("@Nombre", infoTipoMovimiento.Nombre))
            comando.Parameters.Add(New SqlParameter("@Descripcion", infoTipoMovimiento.Descripcion))

            Try
                conexion.Open()
                codigoRegistro = comando.ExecuteScalar


            Catch ex As Exception
                Throw ex

            Finally
                If conexion.State <> ConnectionState.Closed Then
                    conexion.Close()
                End If
            End Try


        End Using

        Return codigoRegistro

    End Function

    Sub Actualizar(infoTipoMovimiento As Entities.TipoMovimientoBE)
        Dim procedimiento As String = "ActualizarTipoMovimiento"

        Using conexion As New SqlConnection(Me.ConnectionString)
            Dim comando As New SqlCommand(procedimiento, conexion)
            comando.CommandType = CommandType.StoredProcedure

            comando.Parameters.Add(New SqlParameter("@IdTipoMovimiento", infoTipoMovimiento.Id))
            comando.Parameters.Add(New SqlParameter("@Nombre", infoTipoMovimiento.Nombre))
            comando.Parameters.Add(New SqlParameter("@Descripcion", infoTipoMovimiento.Descripcion))

            Try
                conexion.Open()
                comando.ExecuteNonQuery()

            Catch ex As Exception
                Throw ex

            Finally
                If conexion.State <> ConnectionState.Closed Then
                    conexion.Close()
                End If
            End Try


        End Using
    End Sub

    Function Obtener(infoTipoMovimiento As Entities.TipoMovimientoBE) As Entities.TipoMovimientoBE
        Dim resultado As New TipoMovimientoBE

        Dim procedimiento As String = "ObtenerTipoMovimiento"

        Using conexion As New SqlConnection(Me.ConnectionString)
            Dim comando As New SqlCommand(procedimiento, conexion)
            comando.CommandType = CommandType.StoredProcedure
            comando.Parameters.Add(New SqlParameter("@IdTipoMovimiento", infoTipoMovimiento.Id))

            Try
                conexion.Open()
                Dim reader = comando.ExecuteReader()

                While reader.Read
                    resultado.Id = reader.GetInt32(reader.GetOrdinal("IdTipoMovimiento"))
                    resultado.Nombre = reader.GetString(reader.GetOrdinal("Nombre"))
                    resultado.Descripcion = reader.GetString(reader.GetOrdinal("Descripcion"))

                End While


            Catch ex As Exception
                Throw ex

            Finally
                If conexion.State <> ConnectionState.Closed Then
                    conexion.Close()
                End If
            End Try


        End Using



        Return resultado
    End Function

    Sub Eliminar(infoTipoMovimiento As Entities.TipoMovimientoBE)
        Dim procedimiento As String = "EliminarTipoMovimiento"


        Using conexion As New SqlConnection(Me.ConnectionString)
            Dim comando As New SqlCommand(procedimiento, conexion)
            comando.CommandType = CommandType.StoredProcedure

            comando.Parameters.Add(New SqlParameter("@IdTipoMovimiento", infoTipoMovimiento.Id))

            Try
                conexion.Open()
                comando.ExecuteNonQuery()

            Catch ex As Exception
                Throw ex

            Finally
                If conexion.State <> ConnectionState.Closed Then
                    conexion.Close()
                End If
            End Try


        End Using
    End Sub



End Class
